package cn.edu.cqvie.jdk8.stream;

import java.util.IntSummaryStatistics;
import java.util.UUID;
import java.util.stream.Stream;

public class StreamTest6 {

    public static void main(String[] args) {
//        Stream<String> stream = Stream.generate(UUID.randomUUID()::toString);
//        //findFirst 返回 Optional 为了规避 NPE
//        stream.findFirst().ifPresent(System.out::println);

        //无限的串行流（iterate）通常和limit配合使用
//        Stream.iterate(1, item -> item + 2).limit(6).forEach(System.out::println);

        //找到大于2的元素，然后将每个元素乘2，然后忽略掉流中的前两个元素，然后再取流中的前2个元素，最后求出流中元素的总和
        Stream<Integer> stream = Stream.iterate(1, item -> item + 2).limit(6);

//        System.out.println(stream.filter(item -> item > 2)
//              .mapToInt(item -> item * 2)
//              .skip(2)
//              .limit(2)
//              .sum());

//        stream.filter(item -> item > 2)
//                .mapToInt(item -> item * 2)
//                .skip(2)
//                .limit(2)
//                .min()
//                .ifPresent(System.out::println);

//        IntSummaryStatistics summaryStatistics = stream.filter(item -> item > 2)
//                .mapToInt(item -> item * 2)
//                .skip(2)
//                .limit(2)
//                .summaryStatistics();
//        System.out.println(summaryStatistics.getMin());
//        System.out.println(summaryStatistics.getMax());
//        System.out.println(summaryStatistics.getCount());

        System.out.println(stream);
        Stream<Integer> stream2 = stream.filter(item -> item > 2);
        System.out.println(stream2);
        Stream<Integer> stream3 = stream2.distinct();
        System.out.println(stream3);
    }
}
